package com.cskaoyan.mapper;

import com.cskaoyan.bean.User;
import com.cskaoyan.bean.UserExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 增删改查：分别以insert、delete、update、select作为开头
 * ByExample：构造条件👉单表的条件，执行对应操作时我们自己来创造条件
 *      方法里都有一个形参：Example 👉 辅助类： 辅助生成条件的
 * ByPrimaryKey：创造一个主键等于值的条件
 * Selective：选择性 👉 insert、update
 */
public interface UserMapper {
    //根据条件计算数量
    long countByExample(UserExample example);
    //根据条件执行删除
    int deleteByExample(UserExample example);
    //根据主键执行删除
    int deleteByPrimaryKey(Integer id);
    //插入记录到数据库中
    int insert(User record);
    //选择性的插入记录到数据库中 👉 如果成员变量不为空，则给这一列赋值 👉 给的就是默认值
    //插入数据库时可以给特定的列插入默认值
    int insertSelective(User record);
    //根据条件执行查询
    List<User> selectByExample(UserExample example);
    //根据主键查询记录
    User selectByPrimaryKey(Integer id);
    //根据条件去执行更新，更新的是成员变量不为空的列
    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
    //根据条件执行更新，更新的全部列
    int updateByExample(@Param("record") User record, @Param("example") UserExample example);
    //根据主键执行更新，更新的是成员变量不为空的列
    int updateByPrimaryKeySelective(User record);
    //根据主键执行更新，更新的全部列
    int updateByPrimaryKey(User record);

    /*List<User> select(@Param("username") String username,
                      @Param("mobile") String mobile,
                      @Param("sort") String sort,
                      @Param("order") String order);*/

    int insertUser(User user);
    int insertUser2(@Param("user") User user);
}